package com.imooc.study.imoocstudy.ioencode;

import java.io.File;
import java.io.IOException;

/**
 * File类常用Api介绍
 * @author Csa
 * @Time 2020/2/13
 */
public class FileDome {
    /**
     * java.io.File类用于表示文件目录
     * File类只用于表示文件目录的信息（名称、大小等），不能用于文件内容的访问！
     */
    public static void main(String[] args) throws IOException {

        // 判断文件是否存在
        // false
        File file = new File("/Users/boykchen/Desktop/fileTest");
        System.out.println(file.exists());

        // 判断文件是否存在，不存在就创建目录
        if(!file.exists()){
            file.mkdir();
        }else{
            file.delete();
        }

        // 判断文件是否是一个目录
        // true
        File fileDir = new File("/Users/boykchen/Desktop/fileDir");
        System.out.println(fileDir.isDirectory());
        // false
        File fileDoc = new File("/Users/boykchen/Desktop/数据中心对外协议规范-1.1.3.docx");
        System.out.println(fileDoc.isDirectory());

        // 判断文件是否是一个文件
        System.out.println(fileDoc.isFile());

        // 创建文件txt-------
        File fileTxt = new File("/Users/boykchen/Desktop/fileDir.txt");
        if (!fileTxt.exists()){
            file.createNewFile();
        }

        // 常用file对象api
        System.out.println(file);//file.toString的内容 /Users/boykchen/Desktop/fileTest
        System.out.println(file.getAbsolutePath());// /Users/boykchen/Desktop/fileTest
        System.out.println(file.getName());// fileTest
        System.out.println(fileDoc.getName());// 数据中心对外协议规范-1.1.3.docx
        System.out.println(fileDoc.getParent());// 获取根目录 /Users/boykchen/Desktop

        // 测试listdirectory
        listDirectory(new File("/Users/boykchen/Desktop/fileDir"));
    }

    public static void listDirectory(File dir)throws IOException{
        if (!dir.exists()){
            throw new IllegalArgumentException("目录"+dir+"不存在！");
        }
        if (!dir.isDirectory()){
            throw new IllegalArgumentException(dir+"不是目录！");
        }

//        // 字符串数组类型
//        String[] fileNames = dir.list();
//        for (String string: fileNames){
//            System.out.println(dir+"\\"+string);
//        }

//        // 如果要便利子目录,File提供了直接放回file的抽象
//        File[] files = dir.listFiles();
//        for (File file:files){
//            System.out.println(file);
//        }

        // 增加递归操作
        File[] files = dir.listFiles();
        if (files!=null){
            for (File file:files){
                if (file.isDirectory()){
                    //递归操作
                    listDirectory(file);
                    System.out.println(file);
                }
            }
        }

    }

}
